查看原文
其他

新型侧信道攻击从 Windows 和 Linux 页面缓存中窃取数据

Ionut Ilascu 代码卫士 2022-05-23

 聚焦源代码安全,网罗国内外最新资讯!

编译:360代码卫士团队

最近出现一种针对操作系统页面缓存的新型侧信道攻击。页面缓存中存储着多种敏感信息,如程序二进制文件、库、文件等。

这种攻击不仅限于硬件架构,可对 Windows 和Linux 机器执行本地攻击,绕过安全沙箱、运行计时的用户界面伪装攻击以及恢复自动生成的临时密码。

由奥地利格拉兹大学、波斯顿大学、NetApp、CrowdStrike和英特尔组成的研究团队还能够在某些条件下,将信息渗透给远程攻击者。

操作系统页面缓存遭攻击

操作系统改进性能的其中一种方法是把从磁盘中首次读取的数据存储在易失性存储器中。通过把数据存储或缓存到内存中,当再次访问这些数据时,操作系统就能更快地读取数据,因为易失性存储器提供的访问速度要快十倍。

尽管研究人员演示了针对 Windows 和 Linux 操作系统的攻击,由于页面缓存存在于所有主流操作系统中,因此 macOS 很有可能也易受攻击。

操作系统和虚拟内存共同运作,当多个进程将虚拟页面映射到相同的物理页面时,它就变为共享内存。

要提取页面缓存信息,攻击者需要知道特定页面何时会出现在页面缓存中。可通过 Linux 上的系统调用‘mincore’和Windows 上的 QueryWorkingSetEx 获知这一信息。

本地攻击

在本地运行这种侧信道攻击并不像远程攻击那样依靠计时间隔。

成功执行本地攻击的前提条件是,攻击者具有读取目标页面的权限。可使用操作系统上的恶意进程实现,或者当进程在具有共享文件的沙箱中运行时实现。

为验证这一理论,研究人员执行了多种攻击,其中一种攻击的目的是秘密发送数据。研究人员指出,“秘密信道通过访问或不访问特定页面就能起作用。我们使用两个页面传输‘READY’信号,使用另外一个页面传输‘ACK’信号。剩余页面用作数据传输位。”

研究人员还测试了认证用户界面伪装攻击,目的是找到某个窗口打开的时间并用甚至无法被高级用户识别的虚假克隆替代。

第三个测试是在 Ubuntu 18.04 的认证窗口上执行按键计时攻击,以收集 root 密码。测试结果显示,输入速度“极”快的用户可遭此类攻击,不过有误报情况出现。多次运行该攻击后,能够收集各种信息并获得完整的密码。

研究人员在 Windows 文本编辑器 (Notepad) 中重复了这一实验,结构均为清洁,不会为读取密码造成更多的噪音和困难。

(上面为  Linux 系统,下面为 Windows 系统。)

远程攻击具有限制条件

研究人员解释称,“我们的远程攻击利用的是内存和磁盘访问之间的在远程系统上度量的定时差异,它被当作获取本地信息的代理。”这可通过度量软页面错误实现。当某个进程在远程服务器上运行,而页面被错误地映射时,就会出现这种情况。研究人员能经由低权限、恶意进程和当作 web 服务器的远程进程之间的隐秘的通信信道发送数据。

由于远程攻击者无法使用本地函数验证缓存中的某个页面是否出现,因此研究人员使用了另外一种方法,即区分网络上的缓存命中和未命中情况。这种方法能使研究人员从内测中读取任意数据,已在 NetSpecter 攻击中披露。

研究人员在具有多种存储类型的系统上进行了实验,其中包括定时差异更小的 SSD 上。然而,研究人员通过使用更大的文件区分页面缓存命中和未命中,扩大了定时差异。

如何防御页面缓存攻击

研究人员表示,攻击在 Windows 系统上比 Linux 系统上“更有效”,这两个操作系统的安全团队均已收到通知。

目前,这种攻击的缓解措施仅存在于 Windows Insider 版本 18305 中。

Linux 系统的用户也面临类似情况。Linus Torvalds 发布修复代码,不过目前正在测试过程中。该漏洞在 Linux 系统上的编号是 CVE-2019-5489。

参与该新型攻击的研究人员包括 Daniel Gruss、Erik Kraft、Trishita Tiwari、Michael Schwarz、Ari Trachtenberg、Jason Hennessey、Alex Ionescu 和 Anders Fogh。他们已将研究成果发布在论文《页面缓存攻击》中。



推荐阅读

新型侧信道攻击利用麦克风读取屏幕内容

新型 CPU 侧信道攻击 SpectreRSB 现身

英特尔 CPU 被曝易遭 BranchScope 侧信道攻击



原文链接

https://www.bleepingcomputer.com/news/security/new-side-channel-attack-steals-data-from-windows-linux-page-cache/



本文由360代码卫士编译,不代表360观点,转载请注明“转自360代码卫士 www.codesafe.cn”。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存